package Sort;

import java.text.SimpleDateFormat;
import java.util.Date;

/*
选择排序：每轮遍历选出最小或者最大的数
 */
public class SelectSort {

  public static void main(String[] args) {
//    int num[] = new int[]{101,34,119,1};
    int num[] = new int[80000];
    for (int i = 0; i < 80000; i++) {
      num[i] = (int)(Math.random()*80000);//生成一个0到80000的数
    }
//    selectSort(num);
//    测试选择排序的效率
    Date date = new Date();
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy--MM-dd HH:mm:ss");
    String dateStr1 = simpleDateFormat.format(date);
    System.out.println("排序前的时间：" + dateStr1);

//    排序后
    selectSort(num);

    Date date2 = new Date();
    String dateStr2 = simpleDateFormat.format(date2);
    System.out.println("排序后的时间：" + dateStr2);
  }

  public static void selectSort(int[] num){
    for (int i = 0; i < num.length - 1; i++) {//选择排序遍历的次数为数组长度减去1
      int min =  num[i];//假定第一个就是最小的
      int minIndex = i;//最小的数的下标，方便后边交换数字
      for (int j = i + 1; j < num.length; j++) {
        if (min > num[j]){//此时min不是最小的
          min = num[j];
          minIndex = j;
          //重置最小值和下标
        }
      }
      if (minIndex != i){//交换两数
        num[minIndex] = num[i];
        num[i] = min;
      }
//      System.out.println("第" + (i+1) + "轮排序的结果为：" + Arrays.toString(num));
    }
  }
}
